import React,{Component} from 'react';
import {
    View,
    Text,
    ActivityIndicator,
    ToastAndroid,
} from 'react-native';


/**
 * 网络请求的工具类
 */
export default class NetUtils extends Component{

    //构造函数，默认的props，以及state 都可以在这里初始化了
    constructor(props){
        super(props); 
    }

    /**
     * 普通的get请求 
     * @param {*} url 地址
     * @param {*} params  参数
     * @param {*} callback  成功后的回调
     */
    static get(url,params ={},callback){
        let data =''
        if (params && Object.keys(params).length) {
            data ='?'
            for (const key in params) {
                if (Object.hasOwnProperty.call(params, key)) {
                    const element = params[key];
                    data = data + key+'='+element
                }
            }
            
          }
          url = url + data
       fetch(url)
        .then((response) => {
            if(response.ok){//如果相应码为200
                return response.json(); //将字符串转换为json对象
            }
        })
        .then((json) => {
            //根据接口规范在此判断是否成功，成功后则回调
            if(json.success){
                callback(json);
            }else{
                //否则不正确，则进行消息提示
                //ToastAndroid 只针对安卓平台，并不跨平台
                ToastAndroid.show(json.resultDesc,ToastAndroid.SHORT);
            }
        }).catch(error => {
            ToastAndroid.show("网络链接中断",ToastAndroid.SHORT);
        });
    };

    /**
     * post key-value 形式 hader为'Content-Type': 'application/x-www-form-urlencoded'
     * @param {*} url 
     * @param {*} service 
     * @param {*} params 
     * @param {*} callback 
     */
    static post(url,service,params,callback){
        //添加公共参数
        var newParams = this.getNewParams(service,params);//接口自身的规范，可以忽略

        fetch(url,{
        method:'POST',
        headers:{
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'//key-value形式
        },
        body:newParams
        })
        .then((response) => {
            if(response.ok){
               return response.json();
            }
        })
        .then((json) => {
            if(json.success){
                callback(json);
            }else{
                ToastAndroid.show(json.resultDesc,ToastAndroid.SHORT);
            }
        }).catch(error => {
            ToastAndroid.show("netword error",ToastAndroid.SHORT);
        });
    };
}